﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Domain.Model.Repositories;
using Domain.Model.Agentes;
using Domain.Model.Base;

namespace Infrastructure.Base.InMemory
{
    public class MAgenteRepository: AgenteRepository
    {
        private Dictionary<AgenteId, Agente> lista;

        public MAgenteRepository()
        {
            this.lista = new Dictionary<AgenteId, Agente>();

            //Agente objAgente1 = new Agente(new AgenteId("1"), "Pepito", "Perez", "Placa 1","Teniente");
            //Agente objAgente2 = new Agente(new AgenteId("2"), "Carlos", "Perez", "Placa 2", "Primero");
            //Agente objAgente3 = new Agente(new AgenteId("3"), "Maria", "Perez", "Placa 3", "Capitan");
            //Agente objAgente4 = new Agente(new AgenteId("4"), "Lupe", "Perez", "Placa 4", "Segundo");

            //lista.Add(new AgenteId("1"), objAgente1);
            //lista.Add(new AgenteId("2"), objAgente2);
            //lista.Add(new AgenteId("3"), objAgente3);
            //lista.Add(new AgenteId("4"), objAgente4);
        }


        public override void Insert(Agente entity)
        {
            this.lista.Add((AgenteId)entity.Identity, entity);
        }

        public override Agente FromId(ObjectIdentity id)
        {
            return this.lista[(AgenteId)id];   
        }

        public override ObjectIdentity NextIdentity()
        {
            return new AgenteId(Guid.NewGuid().ToString().ToUpper());
        }

        public override void Update(Agente entity)
        {
            throw new NotImplementedException();
        }

        public override void Remove(ObjectIdentity id)
        {
            this.lista.Remove((AgenteId)id);
        }

        public override List<Agente> All()
        {
            return new List<Agente>(this.lista.Values);
        }

        public override int Count()
        {
            return this.lista.Values.Count;
        }
    }
}
